package com.ruoyi.yf.service;

import com.ruoyi.system.domain.SysUser;
import com.ruoyi.yf.domain.YfDept;
import com.ruoyi.yf.domain.interfaces.YfDepartment;
import com.ruoyi.yf.domain.mobile.YfMobileDeptNurse;

import java.util.List;

/**
 * 医院科室Service接口
 *
 * @author XiaoYi...
 * @date 2020-03-11
 */
public interface IYfDeptService {


    /**
     * 导入用户数据
     *
     * @param deptList       科室数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName        操作用户
     * @return 结果
     */
    public String importDept(List<YfDept> deptList, Boolean isUpdateSupport, String operName);
    /**
     * 通过科室id 获取当前机构下所有科室
     * @param deptId 科室id
     * @param types 类型
     * @return
     */
    public List<YfDept> selectYfDeptListByDeptId(Long deptId,String types);
    /**
     * 查询医院科室
     *
     * @param deptId 医院科室ID
     * @return 医院科室
     */
    public YfDept selectYfDeptById(Long deptId);

    /**
     * 查询医院科室列表
     *
     * @param yfDept 医院科室
     * @return 医院科室集合
     */
    public List<YfDept> selectYfDeptList(YfDept yfDept);

    /**
     * 新增医院科室
     *
     * @param yfDept 医院科室
     * @return 结果
     */
    public int insertYfDept(YfDept yfDept);

    /**
     * 修改医院科室
     *
     * @param yfDept 医院科室
     * @return 结果
     */
    public int updateYfDept(YfDept yfDept);

    /**
     * 批量删除医院科室
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteYfDeptByIds(String ids);

    /**
     * 删除医院科室信息
     *
     * @param deptId 医院科室ID
     * @return 结果
     */
    public int deleteYfDeptById(Long deptId);

    /**
     * 获取用户下的医院 或分区下的科室
     *
     * @param uid 用户id
     * @return
     */
    List<YfDept> getUserIdDepartment(Long uid);

    // 获取科室及对应的标准科室
    List<YfDept> getDepartmentAndStandardDeptByUserId(Long uid);

    /**
     * 通过暂存点id 获取医院 科室
     * @param stagingId
     * @return
     */
    List<YfDept> selectHD(Long stagingId);

    /**
     * 根据用户所属医院 及以下 所有科室
     * @param deptId
     * @return
     * @author XiaoYi...
     * @date 2020/5/20 10:10
     */
    List<YfDept> select_sysDept_yfDeptList(Long deptId);

    int updateRremoveAndRecoveryTagByIds(String ids, String s);

    /**
     * 查询科室下条码数量
     * @param ids
     * @return
     */
    int selectDeptTagSum(String ids);

    /**
     * 根据用户获取所在医院的科室护士列表
     */
    List<YfMobileDeptNurse> getKSNuserListByUid(Long uid);

    // 今天无医废录入
    int todayNoYF(Long stagingId);

    // 根据医院获取所有科室
    List<YfDept> getYfDeptListByHospitalId(Long hosid);

    // 根据登录名(医院管理员)获取医疗机构的科室列表
    List<YfDepartment> getKslistByLoginName(String userName);

    // 根据暂存点查询医院所有科室
    List<YfDept> getKSlistByStagingId(Long stagingId);
}
